package tool

import (
	"bufio"
	"encoding/json"
	"fmt"
	"os"
)

type Config struct {
	AppName  string   `json:"app_name"`
	AppMode  string   `json:"app_mode"`
	AppHost  string   `json:"app_host"`
	AppPort  string   `json:"app_port"`
	Database Database `json:"database"`
}

type Database struct {
	Driver   string `json:"driver"`
	User     string `json:"user"`
	Password string `json:"password"`
	Port     string `json:"port"`
	DbName   string `json:"db_name"`
	Charset  string `json:"charset"`
	ShowSql  bool   `json:"show_sql"`
}

var cfg *Config

//获取配置文件
func GetConfig() *Config {
	return cfg
}

//解析配置文件
func ParseConfig(path string) (*Config, error) {

	var (
		err    error
		file   *os.File
		read   *bufio.Reader
		deCord *json.Decoder
	)

	if file, err = os.Open(path); err != nil {
		panic(fmt.Sprintf("读取配置文件错误 err:%v", err))
	}

	//延时关闭
	defer file.Close()

	read = bufio.NewReader(file)
	deCord = json.NewDecoder(read)
	cfg = new(Config)
	if err = deCord.Decode(cfg); err != nil {
		panic(fmt.Sprintf("解析配置文件错误 err:%v", err))
	}

	fmt.Println(cfg)
	return cfg, nil
}
